#ifndef SEPARATOR_H
#define SEPARATOR_H

#include "pressure.h"
#define MAX_SPEED          (13000) // rpm 电机运行的最大转速，超出无效
#define MIN_SPEED          (8000)  // rpm 电机运行的最低转速，超出无效
#define START_ENGINE_SPEED (100)   // 启动电机的发动机转速阈值

// 报文接收状态类型定义
typedef enum
{
	message_is_received = 0,
	message_no_received
} message_state_t;


// CAN 接收保温，保存从CAN总线解析出的数据
typedef struct
{
	message_state_t temperature_msg;   // 接收到环境温度报文
	message_state_t motor_control_msg; // 接收到控制报文
	message_state_t engine_speed_msg;  // 接收到发动机转速报文
	
	unsigned char  driect_control_cmd; // 解析的控制指令
	unsigned short target_speed;       // 解析的目标转速
	unsigned short engine_speed;       // 解析的发动机转速
	float temperature;                 // 环境温度
} can_data_t;

// 发动机状态
typedef enum
{
	engine_start = 0,
	engine_stop
} engine_state_t;

// 油分器抽象结构
typedef struct separator
{
	// 油分器系统属性
	engine_state_t engine_state; // 发动机状态
	float target_pressure;       // 闭环目标压力
	float work_current;          // 工作电流
	
	// 模块抽象成员
	pressure_sensor_t press_sensor; // 压力传感器
	can_data_t can_data;            // 接收报文
} separator_t;

// 外部函数接口
void separator_init(separator_t *separator);
void separator_update(separator_t *separator);
void update_engine_state_only_by_can(separator_t *separator);
void update_engine_state(separator_t *separator);





#endif
